package cn.middle.basic.service;

import java.util.List;


import com.middle.common.base.service.BaseService;
import com.middle.common.result.Page;

import cn.middle.basic.entity.SysRole;

public interface SysRoleService extends BaseService<SysRole> {
	
	
	/**
	 * 根据用户ID获取人员角色集
	 * @param userId
	 * @return
	 */
	public List<SysRole> findRolesByUserId(Long userId);
	
	/**
	 * 查询角色列表
	 * @param page 页码
	 * @param pageSize  当前面数量
	 * @param code  角色code
	 * @param name 角色名称
	 * @return
	 */
	public Page<SysRole> listByCodeOrName(int page,int pageSize,String code,String name);
	
	/**
	 * 关联角色与菜单权限信息
	 * @param roleId
	 * @param permissionIds
	 */
	public void associationRolePermissions(Long roleId,List<Long> permissionIds);
	
	
	/**
	 * 该角色还关联有用户信息，需要先解除关系才能删除
	 * @param roleId
	 * @return
	 */
	public boolean hasAssociationRole(Long roleId);
	
	/**
	 * 解除权限关系并且删除角色信息
	 * @param roleId
	 */
	public void disarmPermissionsAndDelete(Long roleId);
	
	/**
	 * 检测角色code 是否已被占用
	 * @param code
	 * @return
	 */
	public boolean occupiedCode(String code);

	/**
	 * 根据角色ID获取权限集
	 * @param roleId
	 * @return
	 */
	public List<Long> associationRolePermissions(Long roleId);

}
